#ifndef VECTEUR_H
#define VECTEUR_H
#include "Point.h"
#include <cmath>

class Vecteur : public Point {

protected:

	double normeInverse;

public:

	static const int axeX = 0;
	static const int axeY = 1;
	static const int axeZ = 2;

	Vecteur(){}
	Vecteur(double, double, double);
	Vecteur(const Point &, const Point &);
	~Vecteur(){}

	void operator +=(const Vecteur &a) { x += a.getX(); y += a.getY(); z += a.getZ(); }
	Vecteur operator +(const Vecteur &a) { return Vecteur(x + a.getX(), y + a.getY(), z + a.getZ()); }
	Vecteur operator *(double i) { return Vecteur(x*i, y*i, z*i); }
	void operator *=(double i) { x*=i; y*=i; z*=i; }
	void operator -=(const Vecteur &a) { x -= a.getX(); y -= a.getY(); z -= a.getZ(); }
	void additionner(double a, double b, double c) { x+=a; y+=b; z+=c; }
	double prodScal(const Vecteur &a) { return (x*a.getX() + y*a.getY() + z*a.getZ()); }
	Vecteur prodVect(const Vecteur &);
	double getNorme() { return sqrt(x*x + y*y + z*z); }
	void calculerNormale();
	Vecteur normaliser();
	void setExtremites(const Point &p1, const Point &p2);

};
#endif